#include "cli.h"
#include "common.h"
#include "parser.h"
#include "vm.h"
#include "core.h"

/**
 * @brief 执行脚本文件
*/
// static void run_file(const char *path)
// {
//     const char *last_slash = strrchr(path, '/');  // 用于判断path路径是否是当前路径的形式
//     if (last_slash != NULL) 
//     {
//         char *root = (char *)malloc(last_slash - path + 2);
//         memcpy(root, path, last_slash - path + 1);
//         root[last_slash - path + 1] = '\0';
//         rootDir = root;
//     }
//     VM *vm = new_vm();
//     const char *source_code = read_file(path);  // 读取源码

//     struct parser parser;
//     init_parser(vm, &parser, path, source_code, NULL);

//     #include "../parser/token.list"
//     while (parser.cur_token.type != TOKEN_EOF) // 循环打印词法分析器对脚本源码的识别结果
//     {
//         get_next_token(&parser);
//         printf("%dL: %s [", parser.cur_token.lineNo, tokenArray[parser.cur_token.type]);
//         uint32_t idx = 0;
//         while (idx < parser.cur_token.length)
//         {
//             printf("%c", *(parser.cur_token.start + idx ++));
//         }
//         printf(")\n");
//     }
// }
// 脚本文件被视为一个单独的模块
static void run_file(const char *path)
{
    const char *last_slash = strrchr(path, '/');  // 用于判断path路径是否是当前路径的形式
    if (last_slash != NULL) 
    {
        char *root = (char *)malloc(last_slash - path + 2);
        memcpy(root, path, last_slash - path + 1);
        root[last_slash - path + 1] = '\0';
        rootDir = root;
    }
    VM *vm = new_vm();
    const char *source_code = read_file(path);  // 读取源码
    
    execute_module(vm, OBJ_TO_VALUE(new_objString(vm, path, strlen(path))), source_code);
}

int main(int argc, const char **argv)
{
    // if (argc == 1)
    // {
    //     ;
    // }
    // else
    // {
        run_file("sample.sp");
    // }
    return 0;
}